﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CRC.Comun.Presentacion;
using CRC.GestionSalones.Controladores;

namespace CRC.GestionSalones.Presentacion
{
    public partial class UsrListadoSalones : UserControl, EscuchadorDeListado
    {
        private ControladorListarSalones cLS = new ControladorListarSalones();
        
        public UsrListadoSalones()
        {
            InitializeComponent();
            ListarSalones();
        }

        /**
         * ListarSalones: LLena la lista de salones
         */
        private void ListarSalones()
        {
            try
            {
                IList<Object[]> salones = cLS.listarSalones();
                foreach (Object[] s in salones)
                    listaSalones.Rows.Add(s);
            }
            catch (Exception ex)
            {

                MessageBox.Show(
                    ex.Message, "Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error
                );
            }
        }

        private void dataGridView1_DoubleClick(object sender, System.EventArgs e)
        {
            if (listaSalones.SelectedRows.Count > 0)
            {
                int intSalon = (int)listaSalones.SelectedRows[0].Cells["ID"].Value;
                VerSalon verSalon = new VerSalon(intSalon);
                verSalon.ShowDialog();
            }
            
        }

        private void ButModificar_Click(object sender, EventArgs e)
        {
            if (listaSalones.SelectedRows.Count > 0)
            {
                int intSalon = (int)listaSalones.SelectedRows[0].Cells["ID"].Value;
                ModificarSalon modificarSalon = new ModificarSalon(intSalon);
                modificarSalon.StartPosition = FormStartPosition.CenterParent;
                modificarSalon.añadirEscuchadorDeListado(this);
                modificarSalon.ShowDialog();
            }
        }
        
        private void butAlta_Click(object sender, EventArgs e)
        {
            AltaSalon altaSalon = new AltaSalon();
            altaSalon.añadirEscuchadorDeListado(this);
            altaSalon.StartPosition = FormStartPosition.CenterParent;
            altaSalon.ShowDialog();
        }

        private void butEliminar_Click(object sender, EventArgs e)
        {

            if (MessageBox.Show("¿Estás seguro que quieres borrar el Salón seleccionado? " +
                "Se perderán los datos de las congregaciones que asisten a este.", "Confirmar",
                MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1
            ) == DialogResult.Yes) 
            {
                int intIdSalon = (int)listaSalones.SelectedRows[0].Cells["ID"].Value;
                ControladorEliminarSalon cES = new ControladorEliminarSalon();

                try
                {
                    cES.eliminarSalon(intIdSalon);
                    listaSalones.Rows.Remove(listaSalones.SelectedRows[0]);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(
                        ex.Message,
                        "Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error,
                        MessageBoxDefaultButton.Button1
                    );
                }
            }
        }

        #region Miembros de EscuchadorDeListado

        public void notificarCambio(object pSender, string pStrAccion, object pObjValor)
        {
            Object[] datosSalon = (Object[])pObjValor;
            if (pStrAccion.CompareTo("añadir.salon") == 0)
            {
                listaSalones.Rows.Add(datosSalon);
            }
            else if (pStrAccion.CompareTo("modificar.salon") == 0) 
            {
                foreach (DataGridViewRow row in listaSalones.Rows)
                { 
                    if ((int)row.Cells["ID"].Value == (int)datosSalon[0])
                    {
                        row.SetValues(datosSalon);
                        return;
                    }
                }
            }
        }

        #endregion

    }
}
